<?php
/**
 * Created by PhpStorm.
 * User: aron
 * Date: 2019/5/20
 * Time: 4:54 PM
 */


class FileUtil
{
    /**
     * 遍历删除目录
     * @param $dir 目录
     */
    public static function delDir($dir)
    {
        if (file_exists($dir)) {
            if ($dirHandle = @opendir($dir)) {
                while ($filename = readdir($dirHandle)) {
                    if ($filename == "."
                        || $filename == "..") {
                        continue;
                    }
                    $subFile = $dir . DIRECTORY_SEPARATOR . $filename;
                    if (is_file($subFile)) {
                        // unlink删除文件
                        unlink($subFile);
                    } else if (is_dir($subFile)) {
                        self::delDir($subFile);
                    }
                }
                // rmdir删除空目录
                closedir($dirHandle);
                rmdir($dir);
            }
        }
    }

    /**
     * 文件夹复制
     * @param $sourceDir 源文件夹
     * @param $destDir 目的位置
     */
    public static function copyDir($sourceDir, $destDir)
    {
        if (!is_dir($sourceDir)) {
            return;
        }
        if (!file_exists($destDir)) {
            mkdir($destDir, 0777, true);
        }
        $sourceDirHandle = opendir($sourceDir);
        while ($fileName = readdir($sourceDirHandle)) {
            if ($fileName == "."
                || $fileName == "..") {
                continue;
            }
            $sourceFileName = $sourceDir . DIRECTORY_SEPARATOR . $fileName;
            $destFileName = $destDir . DIRECTORY_SEPARATOR . $fileName;
            if (is_dir($sourceFileName)) {
                self::copyDir($sourceFileName, $destFileName);
            } else if (is_file($sourceFileName)) {
                copy($sourceFileName, $destFileName);
            }
        }
        closedir($sourceDirHandle);
    }

    public static function createFile($filePath) {
        $pos = strrpos($filePath, DIRECTORY_SEPARATOR);
        $dir = substr($filePath, 0, $pos);
        if (!(file_exists($dir) && is_dir($dir))) {
            mkdir($dir, 0777, true);
        }
        return $filePath;
    }

}
